package com.ruijiang.controller.order_service;


import com.ruijiang.controller.ApiPrefix;
import com.ruijiang.dto.count.OrderCountDto;

import com.ruijiang.dto.count.PartnerCollectDto;
import com.ruijiang.dto.count.VMTaskCountDto;
import com.ruijiang.result.PageResult;
import com.ruijiang.service.OrderService.OrderService;
import com.ruijiang.vo.common.EchartCollectVO;
import com.ruijiang.vo.sku.SkuCollectCountVO;
import com.ruijiang.vo.sku.SkuCountVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping(ApiPrefix.ORDER_SERVICE+"/report")
@Slf4j
public class OrderReportController {

    /**
     * 查询订单数量
     */
    @Autowired
    OrderService orderService;
    @GetMapping("/orderCount")
    public String getOrderCount(OrderCountDto dto){
        log.info("查询订单 {}" ,dto);
        return orderService.getOrderCount(dto);

    }

    /**
     * 查询订单金额
     * @param dto
     * @return
     */
    @GetMapping("/orderAmount")
    public String getOrderAmount(OrderCountDto dto){
        log.info("查询订单 {}" ,dto);
        return orderService.getOrderAmount(dto);

    }


    /**
     * 获取售货机商品销量
     * @param innerCode
     * @param start
     * @param end
     * @param dto
     * @return
     */
    @GetMapping("/skuCollect/{innerCode}/{start}/{end}")
    public List<SkuCollectCountVO> getSkuCollectCount(
            @PathVariable String innerCode,
            @PathVariable String start,
            @PathVariable String end,
            VMTaskCountDto dto
            ){
        log.info("获取售货机商品销量");
        return orderService.getSkuCollectCount(innerCode,start,end,dto);

    }

    /**
     * 根据地区汇总销售额数据
     * @param start
     * @param end
     * @return
     */
    @GetMapping("/regionCollect/{start}/{end}")
    public EchartCollectVO regionCollect(
            @PathVariable String start,
            @PathVariable String end
    ){

        log.info("根据地区汇总销售额数据(销售量分布)");
        return orderService.regionCollect(start,end);

    }


    /**
     * 获取销量前几的商品
     * @return
     */
    @GetMapping("/skuTop/{topValue}/{start}/{end}")
    public List<SkuCountVO> getSkuTop(
            @PathVariable Integer topValue,
            @PathVariable String start,
            @PathVariable String end
    ){
        log.info("获取前 {} 的商品",topValue);
        return orderService.getSkuTop(topValue,start,end);
    }


    /**
     * 获取销售额统计
     * @param collectType
     * @param start
     * @param end
     * @return
     */
    @GetMapping("/amountCollect/{collectType}/{start}/{end}")
    public EchartCollectVO getAmountCollect(
            @PathVariable String collectType,
            @PathVariable String start,
            @PathVariable String end
    ){
        return orderService.getAmountCollect(collectType,start,end);
    }


    /**
     * 分页获取一定日期范围之内的合作商分成汇总数据
     * @param dto
     * @return
     */
    @GetMapping("/partnerCollect")
    public PageResult getPartnerCollect(PartnerCollectDto dto){
        log.info("分页获取一定日期范围之内的合作商分成汇总数据");
        return orderService.getPartnerCollect(dto);
    }

}
